package com.kele.controller;

import com.kele.domain.Blog;
import com.kele.domain.Follow;
import com.kele.domain.User;
import com.kele.service.BlogService;
import com.kele.service.FollowService;
import com.kele.service.UserService;
import io.swagger.annotations.ApiOperation;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


/**
 * @author 赵奥林
 * @date 2021年05月10日 13:05
 * @Description  用户模块：
 *                    用户的基本操作：登陆注册、增删改查、修改密码、找回密码、修改个人信息、注销账号
 */
@Controller
@RequestMapping(value = "/users")
public class UsersController {

    @Resource
    private UserService userService;

    @Resource
    private BlogService blogService;

    /**
     * 转跳到个人中心
     * @param request 获取session
     * @param model 数据转发
     * @return 视图解析器
     */
    @RequestMapping("/toPeopleCenter")
    public String toPeopleCenter(HttpServletRequest request, Model model){
        User user= (User) request.getSession().getAttribute("User");
        model.addAttribute("user",user);
        return "/static_resources/templates/peopleCenter";
    }


    //用户修改个人信息
    @RequestMapping(value = "/updateAccount",method = RequestMethod.POST)
    public String updateAccount(User user,HttpServletRequest request){
        //标识用户的个人信息修改成功
        HttpSession session=request.getSession(true);
        session.setAttribute("User",user);
       return "static_resources/templates/peopleCenter";
    }

    //用户注销账户（删除账号）
    @RequestMapping(value = "/deleteAccount",method = RequestMethod.GET)
    public String deleteAccount(Integer id,String password){
        userService.deleteAccount(id,password);
        return "123";
    }


//用户VIP （权限的判定）
    /**
     *  用于判断是否为VIP，权限的判定
     * @param request 通过请求获取session
     * @return 返回一个只用于判断
     *  0 为普通用户
     *  1~3为VIP用户
     *  4 ~∞ 为Manager  （管理员）
     */
    @RequestMapping(value = "/isManager" )
    public int isManagerHelper(HttpServletRequest request){
        User user= (User) request.getSession().getAttribute("account");
        return user.getId();
    }
    @RequestMapping(value = "/toWrite")
    public String toWrite(){

        return "/static_resources/templates/write";
    }


    /**
     * 跳转到聊天页面
     */
    @GetMapping(value = "/toChatroom")
    public String toChatroom(){
        return "/static_resources/chat/chat";
    }


    @GetMapping("/information")
    @ApiOperation(value = "个人中心基本页面",notes = "个人中心初次进入界面内容")
    public String information(HttpServletRequest request,
                              @RequestParam("id") Integer id,
                              Model model){
        Map<String,Object> map= new HashMap<String,Object>();
        //通过ID找到对象
        User user=userService.queryUserById(id);
        System.out.println(user);
        //昵称
        String blogger=user.getNickname();
        //编号
        Integer userid=user.getId();
        //得到该用户的所有文章，使得看到其通过审核的博客
        List<Blog> blogs= blogService.findBlogsByBlogger(blogger);

        //得到该用户的关注的列表
        List<User> attention=userService.selectAllFollow(userid);
        //得到自己的粉丝
        List<User> fun=userService.selectAllFollows(userid);

        map.put("information",user);
        map.put("blog",blogs);
        map.put("attention",attention);
        map.put("fun",fun);
        model.addAttribute("map",map);
        return "/static_resources/templates/peoplePage";





    }



}
